جزوه · فصل چهارم · جلسه ۴۴ · انواع لینک‌ها ← بازگشت به فهرست
📘 فصل چهارم · جلسه ۴۴ انواع لینک‌ها در لینوکس
📅 تاریخ: دوشنبه، ۲۶ مرداد ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 🐧 Debian (کالی) · 📦 Red Hat
📁 قبل از شروع، یه مثال ساده:

لینک‌ها مثل میانبرهای ویندوز هستند، اما قدرتمندتر! دو نوع اصلی دارند: لینک نرم (Soft Link) و لینک سخت (Hard Link). بیایید ببینیم هرکدوم چطور کار می‌کنند.

▍ لینک چیست و چرا استفاده می‌شود؟

لینک (Link) یک ارجاع به یک فایل یا دایرکتوری است. با استفاده از لینک‌ها می‌توانید:

▍ انواع لینک‌ها

🔗 Hard Link (لینک سخت)

  • به خود فایل (Inode) اشاره می‌کند.
  • همان Inode را با فایل اصلی به اشتراک می‌گذارد.
  • اگر فایل اصلی را حذف کنید، داده‌ها باقی می‌مانند (تا زمانی که یک Hard Link وجود داشته باشد).
  • فقط برای فایل‌ها کار می‌کند (نه دایرکتوری‌ها).
  • نمی‌تواند بین سیستم‌فایل‌های مختلف (پارتیشن‌ها) لینک ایجاد کند.

🔗 Soft Link (لینک نرم / سمبلیک)

  • به نام فایل (Path) اشاره می‌کند، نه به Inode.
  • Inode متفاوتی از فایل اصلی دارد.
  • اگر فایل اصلی را حذف کنید، لینک می‌شکند (Broken Link).
  • برای فایل‌ها و دایرکتوری‌ها کار می‌کند.
  • می‌تواند بین سیستم‌فایل‌های مختلف لینک ایجاد کند.

▍ ساختار Inode در لینوکس

Inode یک ساختار داده در سیستم فایل است که اطلاعات مربوط به یک فایل را ذخیره می‌کند (به جز نام فایل). هر فایل در لینوکس یک Inode منحصربه‌فرد دارد.

💡 نکته مهم:

در لینوکس، نام فایل فقط یک برچسب برای Inode است. یک فایل می‌تواند چندین نام داشته باشد (Hard Link) که همه به یک Inode اشاره می‌کنند.

📝 مثال:

فرض کنید فایل OriginalFile.txt با Inode شماره 1234 دارید. یک Hard Link به نام HardLinkFile.txt ایجاد می‌کنید. هر دو نام به یک Inode (1234) اشاره می‌کنند.

  • نام فایل ۱: OriginalFile.txt (Inode: 1234)
  • نام فایل ۲: HardLinkFile.txt (Inode: 1234) → Hard Link
  • نام فایل ۳: SoftLinkFile.txt (Inode: 5678) → Soft Link (به نام فایل اشاره می‌کند، نه Inode)

▍ ایجاد لینک با دستور ln

برای ایجاد لینک از دستور ln (مخفف Link) استفاده می‌شود.

• ایجاد Hard Link

┌──(ya3in㉿kali)-[~] └─$ ln OriginalFile.txt HardLinkFile.txt

توضیح: یک Hard Link به نام HardLinkFile.txt برای فایل OriginalFile.txt ایجاد می‌کند.

• ایجاد Soft Link (Symbolic Link)

┌──(ya3in㉿kali)-[~] └─$ ln -s OriginalFile.txt SoftLinkFile.txt

توضیح: با گزینه -s یک Soft Link ایجاد می‌شود.

📌 تفاوت در خروجی ls -l:
┌──(ya3in㉿kali)-[~] └─$ ls -l -rw-r--r-- 1 ya3in ya3in 1024 Aug 17 10:00 OriginalFile.txt
-rw-r--r-- 1 ya3in ya3in 1024 Aug 17 10:00 HardLinkFile.txt
lrwxrwxrwx 1 ya3in ya3in 15 Aug 17 10:05 SoftLinkFile.txt -> OriginalFile.txt
  • Hard Link: مجوزها و اندازه دقیقاً مشابه فایل اصلی است.
  • Soft Link: با l شروع می‌شود و با یک فلش به فایل اصلی اشاره می‌کند.

▍ پیدا کردن فایل اصلی یک Soft Link

با استفاده از دستور readlink می‌توانید مسیر فایل اصلی یک Soft Link را پیدا کنید.

┌──(ya3in㉿kali)-[~] └─$ readlink -f SoftLinkFile.txt /home/ya3in/OriginalFile.txt

توضیح: readlink -f مسیر کامل فایل اصلی (مقصد) را نمایش می‌دهد.

┌──(ya3in㉿kali)-[~] └─$ readlink SoftLinkFile.txt OriginalFile.txt

توضیح: readlink بدون گزینه، فقط مسیر نسبی مقصد را نمایش می‌دهد.

▍ حذف لینک‌ها

برای حذف لینک‌ها، از دستور rm استفاده کنید. (همانند حذف یک فایل معمولی)

┌──(ya3in㉿kali)-[~] └─$ rm SoftLinkFile.txt

توضیح: Soft Link را حذف می‌کند، اما فایل اصلی تغییری نمی‌کند.

⚠️ نکته مهم:

حذف یک Hard Link، فقط یکی از نام‌های فایل را حذف می‌کند. تا زمانی که حداقل یک Hard Link دیگر وجود داشته باشد، داده‌های فایل از بین نمی‌روند.

▍ جدول خلاصه مقایسه لینک‌ها

ویژگی Hard Link Soft Link (Symbolic)
ارجاع به Inode فایل نام فایل (Path)
Inode همان Inode فایل اصلی Inode متفاوت
اگر فایل اصلی حذف شود داده‌ها باقی می‌مانند لینک می‌شکند (Broken)
پشتیبانی از دایرکتوری ❌ خیر ✅ بله
بین سیستم‌فایل‌های مختلف ❌ خیر ✅ بله
دستور ایجاد ln original link ln -s original link
نمایش در ls -l مشابه فایل معمولی با l و فلش →
✅ تمرین پیشنهادی:
  • یک فایل متنی ایجاد کنید (مثلاً test.txt).
  • یک Hard Link و یک Soft Link برای آن ایجاد کنید.
  • با ls -li (نمایش Inode) تفاوت آنها را مشاهده کنید.
  • فایل اصلی را حذف کنید و ببینید چه اتفاقی برای هر دو لینک می‌افتد.
  • با readlink -f مسیر یک Soft Link را پیدا کنید.